include_defs('//lib/maven.defs')
include_defs('//lib/codemirror/cm.defs')

VERSION = '5.14.2'
TOP = 'META-INF/resources/webjars/codemirror/%s' % VERSION
TOP_MINIFIED = 'META-INF/resources/webjars/codemirror-minified/%s' % VERSION

maven_jar(
  name = 'codemirror-minified',
  id = 'org.webjars.npm:codemirror-minified:' + VERSION,
  sha1 = 'c69056d2a0e07432326e67ea8fe2abb91a065030',
  attach_source = False,
  license = 'codemirror-minified',
  visibility = [],
)

maven_jar(
  name = 'codemirror-original',
  id = 'org.webjars.npm:codemirror:' + VERSION,
  sha1 = '1ed9697531be85c85edb70fcdf58f10045563f7b',
  attach_source = False,
  license = 'codemirror-original',
  visibility = [],
)

for archive, suffix, top in [('codemirror-original', '', TOP), ('codemirror-minified', '_r', TOP_MINIFIED)]:
  # Main JavaScript and addons
  genrule(
    name = 'cm' + suffix,
    cmd = ';'.join([
        "echo '/** @license' >$OUT",
        'unzip -p $(location :%s) %s/LICENSE >>$OUT' % (archive, top),
        "echo '*/' >>$OUT",
      ] +
      ['unzip -p $(location :%s) %s/%s >>$OUT' % (archive, top, n) for n in CM_JS] +
      ['unzip -p $(location :%s) %s/addon/%s >>$OUT' % (archive, top, n)
       for n in CM_ADDONS]
    ),
    out = 'cm%s.js' % suffix,
  )

  # Main CSS
  genrule(
    name = 'css' + suffix,
    cmd = ';'.join([
        "echo '/** @license' >$OUT",
        'unzip -p $(location :%s) %s/LICENSE >>$OUT' % (archive, top),
        "echo '*/' >>$OUT",
      ] +
      ['unzip -p $(location :%s) %s/%s >>$OUT' % (archive, top, n)
       for n in CM_CSS]
    ),
    out = 'cm%s.css' % suffix,
  )

  # Modes
  for n in CM_MODES:
    genrule (
      name = 'mode_%s%s' % (n, suffix),
      cmd = ';'.join([
        "echo '/** @license' >$OUT",
        'unzip -p $(location :%s) %s/LICENSE >>$OUT' % (archive, top),
        "echo '*/' >>$OUT",
        'unzip -p $(location :%s) %s/mode/%s/%s.js >>$OUT' % (archive, top, n, n),
        ]),
      out = 'mode_%s%s.js' % (n, suffix),
    )

  # Themes
  for n in CM_THEMES:
    genrule(
      name = 'theme_%s%s' % (n, suffix),
      cmd = ';'.join([
          "echo '/** @license' >$OUT",
          'unzip -p $(location :%s) %s/LICENSE >>$OUT' % (archive, top),
          "echo '*/' >>$OUT",
          'unzip -p $(location :%s) %s/theme/%s.css >>$OUT' % (archive, top, n)
        ]
      ),
      out = 'theme_%s%s.css' % (n, suffix),
    )

  # Jar packaging
  genrule(
    name = 'jar' + suffix,
    cmd = ';'.join([
      'cd $TMP',
      'mkdir -p net/codemirror/{lib,mode,theme}',
      'cp $(location :css%s) net/codemirror/lib/cm.css' % suffix,
      'cp $(location :cm%s) net/codemirror/lib/cm.js' % suffix]
      + ['cp $(location :mode_%s%s) net/codemirror/mode/%s.js' % (n, suffix, n)
         for n in CM_MODES]
      + ['cp $(location :theme_%s%s) net/codemirror/theme/%s.css' % (n, suffix, n)
         for n in CM_THEMES]
      + ['zip -qr $OUT net/codemirror/{lib,mode,theme}']),
    out = 'codemirror%s.jar' % suffix,
  )

  prebuilt_jar(
    name = 'codemirror' + suffix,
    binary_jar = ':jar%s' % suffix,
    deps = [
      ':jar' + suffix,
      '//lib:LICENSE-' + archive,
    ],
    visibility = ['PUBLIC'],
  )

